﻿/* Questo test non è realizzabile con un Rhino Mocks a causa della particolare
 * architettura del routing di Dynamic Data. Per fini dimostrativi si è usato
 * TypeMock Isolator, che possiede delle funzionalità in più, ma essendo un
 * prodotto commerciale, non possiamo rilasciarlo. Il codice è stato comunque
 * pubblicato, così che chi voglia capire le potenzialità di questo prodotto
 * o usare una propria licenza, possa comunque avvalersene.
 * 
 * Marco De Sanctis
 */

//using System.Web;
//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using Microsoft.VisualStudio.TestTools.UnitTesting;
//using System.Web.Routing;
//using System.Collections.Specialized;
//using System.Web.DynamicData;
//using ASPItalia.ModelVirtualCasting.Web.Tests.Utils;
//using TypeMock.ArrangeActAssert;

//namespace ASPItalia.ModelVirtualCasting.Web.Tests.Routes
//{
//    [TestClass]
//    public class DynamicDataRouteTest
//    {
//        private RouteData GetRouteData(string url, string tableName)
//        {
//            RouteCollection routeCollection = new RouteCollection();

//            HttpContextBase context = Isolate.Fake.Instance<HttpContextBase>();
//            Isolate
//                .WhenCalled(() => context.Request.AppRelativeCurrentExecutionFilePath)
//                .WillReturn(url);
//            Isolate
//                .WhenCalled(() => context.Request.QueryString)
//                .WillReturn(new NameValueCollection());

//            MetaModel model = Isolate.Fake.Instance<MetaModel>();
//            MetaTable table = Isolate.Fake.Instance<MetaTable>();

//            Isolate
//                .WhenCalled(() => model.TryGetTable(tableName, out table)).WillReturn(true);

//            Global.DefaultModel = model;
//            Global.RegisterRoutes(routeCollection);

//            var routeHandler = Isolate.Fake.Instance<DynamicDataRouteHandler>();
//            Isolate
//                .WhenCalled(() => routeHandler.CreateHandler(null, null, null))
//                .WillReturn(Isolate.Fake.Instance<IHttpHandler>());

//            ((Route)routeCollection["dynData"]).RouteHandler = routeHandler;

//            return routeCollection.GetRouteData(context);
//        }

//        [Isolated]
//        [TestMethod]
//        public void DynamicDataRoute_MyTable_Insert()
//        {
//            var routeData = this.GetRouteData("~/admin/MyTable/Insert.aspx", "MyTable");

//            RouteTestHelper.AssertRoute(routeData, new { table = "MyTable", action="Insert" });
//        }
//    }
//}
